Rekurze - zatím nekonečná

Další možností jak opakovat příkazy je ta, že procedura volá sama sebe - takzvaná rekurze:

Zkusme malinko upravit proceduru tecka z minulé lekce:
to tecka
wait any
setpw any
setpc any
fd 0
pu
rt any
fd any
pd
tecka
end
Všimněte si, že jen na konec procedury přibyl jeden příkaz - tecka. Co se bude dít - nakreslí se jedna tečka, potom se bude znovu vykonávat procedura tecka, v ní se nakreslí tečka a znovu se volá procedura tecka a tak stále dokola, teoreticky do nekonečna (prakticky do naplnění paměti, což může počítači způsobit potíže).

Ukončit toto nekonečné opakování je možné buď klávesou F12, nebo pomocí tlačítek na panelu nástrojů pro přerušení nebo zastavení podle obrázku:

Další možnosti přináší využití rekurze v procedurách s parametry, kdy je možné hodnoty parametrů při opakování měnit:

Následující procedura spirala je zajímavá tím, že jde o proceduru s parametrem, navíc využívá rekurzi a to ještě takovou, že se při ní zvětšuje hodnota parametru:
to spirala :a
fd :a rt 90 wait 100
spirala :a+1
end
Procedura je jednoduchá - želvička popojde, otočí se o 90 stupňů, počká 100 milisekund a totéž bude provádět znovu, ale parametr se o 1 zvětší, čili další nakreslená úsečka bude vždy o jeden krok delší než předešlá. Vyzkoušejte, vznikne zajímavý obrázek, můžete také zkoušet měnit hodnotu, o kterou se parametr zvětšuje.

Zajímavé spirály vytvořili experimentováním s hodnotami parametrů a úhlů žáci 6.C ve šk. roce 2009/10, prohlédnout si je můžete zde.



Projekt ulož pod názvem lekce12.imp !

Úkol:

Základní úlohy:

1. Napis proceduru bar_ctverec, která stále dokola kreslí stejný čtverec s náhodnými barvami stran.

2. Napiš proceduru usecky, při které se želvička bude posouvat stále dopředu, ale čím dál pomaleji.


Úlohy na plus:

1. Napiš proceduru blik_in, při které budou neustále blikat tvoje iniciály nakreslené želvičkou.

2. Napiš proceduru pro kreslení pravidelných víceúhelníků se stejně velkou stranou a stále se zvětšujícím počtem stran jako na obrázku.

3. Napiš proceduru, při které se budou na obrazovce objevovat náhodně velké a barevné úsečky na náhodných místech a s náhodným otočením. Želvička úsečku nakreslí, smaže ji (pomocí pe), náhodně se otočí a přesune a tak stále dokola.
Pozn.: aby vše správně fungovalo i na okrajích obrazovky, zapněte želvičce v záložce Pozice - Oblast - S odrazem.


Úloha na jedničku:

Vytvoř projekt Šetřič pro šetřič obrazovky, kdy se budou náhodně plynule pohybovat po obrazovce dvě různě velké náhodně barevné kružnice.